<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 1. Symbol 的使用
        // 一般不会参与计算使用，只是表示唯一的键
        const num = Symbol(100);

        // 2. 声明一个对象
        // symbol 的作用就是防止这个键被其他人覆盖掉
        // 可以打点，或者使用中括号包括
        const k = Symbol('num')
        const obj = {
            // 对象的属性本质上是字符串
            [k]: 10,
            '100': true,
            num: 20,
            // 内置的键
            [Symbol.iterator]: function () { }
        }
        obj[Symbol('num')] = 20

        console.log(obj);

        // 3. 取出对应键的值
        // 会创建一个新的Symbol的值
        // console.log(obj[Symbol('num')]);
        // 遍历也拿不到
        // for (var k in obj) {
        //     console.log(obj[k]);
        // }
        // 方式1：把键使用常量或者变量声明出去
        // console.log(obj[k]);
        // 方式2：
        const result = Object.getOwnPropertySymbols(obj)
        console.log(result);
        console.log(obj[result[1]]);
    </script>
</body>

</html>